package handler;

import dao.CidadeDao;
import dao.EstadoDao;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Named;
import javax.persistence.RollbackException;
import pojo.Cidade;

/**
 *
 * @author Vanessinha
 */
@Named(value = "cidadeHandler")
@SessionScoped
public class CidadeHandler implements Serializable {

    @EJB
    private CidadeDao cidadedao = new CidadeDao();
    @EJB
    private EstadoDao estadodao = new EstadoDao();
    private Cidade cidade = new Cidade();
    private List<Cidade> listacidade = new ArrayList<>();
    private Cidade excluido;
    private long idEstado;
    private long idExluido;

    public EstadoDao getEstadodao() {
        return estadodao;
    }

    public void setEstadodao(EstadoDao estadodao) {
        this.estadodao = estadodao;
    }

    public long getIdExluido() {
        return idExluido;
    }

    public void setIdExluido(long idExluido) {
        this.idExluido = idExluido;
    }

    
    public CidadeHandler() {
    }

    public long getIdEstado() {
        return idEstado;
    }

    public void setIdEstado(long idEstado) {
        this.idEstado = idEstado;
    }

    public Cidade getCidade() {
        return cidade;
    }

    public void setCidade(Cidade cidade) {
        this.cidade = cidade;
    }

    public CidadeDao getCidadedao() {
        return cidadedao;
    }

    public void setCidadedao(CidadeDao cidadedao) {
        this.cidadedao = cidadedao;
    }

    public Cidade getExcluido() {
        return excluido;
    }

    public void setExcluido(Cidade excluido) {
        this.excluido = excluido;
    }

    public Cidade getcidade() {
        return cidade;
    }

    public void setcidade(Cidade cidade) {
        this.cidade = cidade;
    }

    public CidadeDao getcidadedao() {
        return cidadedao;
    }

    public void setcidadedao(CidadeDao cidadedao) {
        this.cidadedao = cidadedao;
    }

    public List<Cidade> getListacidade() {
        return listacidade;
    }

    public void setListacidade(List<Cidade> listacidade) {
        this.listacidade = listacidade;
    }

    public String salvar() {
        cidade.setCidCodestado(estadodao.pesquisar(idEstado));
        cidadedao.inserir(cidade);
        cidade = new Cidade();
        cancelar();
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "CONFIRMAÇÃO",
                "Cadastrado realizado com sucesso!"));
        return "CadastroCidade.xhtml";
    }

    public List<Cidade> listacidade() {
        return listacidade = cidadedao.getAll();
    }

    public String removercidade(Cidade obj) {
        try {
            cidadedao.excluir(obj);
            cancelar();
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,
                    "CONFIRMAÇÃO", "Registro removido com sucesso!"));
        } catch (RollbackException e) {
            FacesContext context = FacesContext.getCurrentInstance();
            context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,
                    "ATENÇÃO", "Registro já esta em uso, não pode ser removido."));
        }
        return "CadastroCidade.xhtml";
    }

    public void parametroRemover(ActionEvent event) {
        UIComponent link = event.getComponent();
        UIParameter param = (UIParameter) link.findComponent("idParaRemover");
        System.out.println("param"+param.toString());
        excluido = (Cidade) param.getValue();
    }

    public void remover() {
        removercidade(excluido);
        excluido = null;
    }

    public void alterar(Cidade obj) {
        obj = cidadedao.pesquisar(obj.getCidCodigo());
        this.cidade = obj;
    }

    public String cancelar() {
        cidade = new Cidade();
        idEstado = 0L;
        return "CadastroCidade.xhtml";
    }
}
